package com.sxz.mall.mallseckill.schedul;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务
 *
 * @EnableScheduling springboot 开启定时任务
 * @Scheduled 设置具体的定时
 * @EnableAsync 开启异步功能
 */
@Slf4j
@Component

public class SeckillSchedule {

    // 默认是同步的，方法走完，继续定时执行
    // 解决方案，1、内部使用completableFuture异步处理器执行任务
    //         2、schedule方法异步执行 @Async  底层的threadPoolExcutor可配置
    @Scheduled(cron = "* * * * * *")
    @Async // 标识希望异步执行
    public void schedule() {
        log.info("定时任务.....");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
